package com.zhouyx.redisactive.lock;
/**
 * redis分布式锁实现方式
 *
 * 1.为什么不直接使用expire设置超时时间，而将时间的毫秒数其作为value放在redis中？如下面的方式，把超时的交给redis处理：
 * if (conn.setnx(lockKey) == 1) {
 * conn.expire(lockKey, lockExpire);}
 * 这种方式貌似没什么问题，但是假如在setnx后，redis崩溃了，expire就没有执行，结果就是死锁了。锁永远不会超时
 *
 * 2.多台机器同时向redis发出setnx请求，会不会存在并发问题?
 * 其实redis本事是不会存在并发问题的，因为他是单进程的，再多的command都是one by one执行的。
 * 我们使用的时候，可能会出现的并发问题都是多个命令组才会出现，比如get和set这一对。
 * */